// 导入组件
import PageTools from '@/components/PageTools'
import UploadExcel from '@/components/UploadExcel'
import ImageUpload from '@/components/ImageUpload'
// 导入处理日期的第三方包
import moment from 'moment'
import store from '@/store'
// 定义一个插件:本质就是一个对象,对象中必须有install方法
// 解决图片加载失败,显示一张默认显示
export default {
  install(Vue, options) {
    // 定义一个全局指令
    Vue.directive('imgerror', {
      inserted(el, bindings) {
        // 判断图片是否加载失败
        el.onerror = () => {
          // 修改img的属性
          if (!el.src) el.setAttribute('src', bindings.value || options.default)
        }
      },
      // 如果手动把src的值置空（删除头像），显示默认头像
      componentUpdated(el, bindings) {
        // 如果src没有赋值, 给默认src
        el.setAttribute('src', el.src || bindings.value)
      }

    })
    // 扩展全局组件
    // 注册工具栏组件
    Vue.component(PageTools.name, PageTools)
    // 注册导入excel组件
    Vue.component(UploadExcel.name, UploadExcel)
    // 注册导入上传的组件
    Vue.component(ImageUpload.name, ImageUpload)
    // 扩展全局过滤器 , 处理时间
    Vue.filter('formatTime', (value) => {
      return moment(value).format('YYYY-MM-DD')
    })

    // 扩展一个全局的方法 , 挂载到vue实例上
    // 用于判断当前用户对某个按钮是否拥有操作权限
    Vue.prototype.$isOk = (authPoint) => {
      // authPoint表示此事判断的是哪一个按钮的标志
      // 获取当前用户拥有的所有权限点
      const allPoints = store.getters.points
      if (allPoints.includes(authPoint)) {
        // 有权限 , 返回true
        return true
      } else {
        return false
      }
    }
  }

}
